package com.caoyanan.algorithm.question.zuoTraining.training004.class01;

import com.caoyanan.algorithm.question.zuoTraining.LogarithmInputGenerator;

import java.util.Arrays;

/**
 * 给定一个数组arr，从左到右表示昨天从早到晚股票的价格。
 * 作为一个事后诸葛亮，你想知道如果只做一次交易，且每次交易只买卖一股，返回能挣到的最大钱数
 * @author: caoyanan
 * @time: 2021/5/26 22:16
 */
public class Question01_MaxProfit1 {

    public static void main(String[] args) {

        int count = 10000;
        for (int i = 0; i < count; i++) {
            int[] arr = LogarithmInputGenerator.getInstance().generateRandomArray(10, 50);
            int money = maxProfit(arr);
            System.out.printf("价格 %s 可以得到的最高收益为 %s \n", Arrays.toString(arr), money);
        }

    }

    /**
     * 遍历数组 认为每个位置都是卖出点，买入点为左侧最小值，求一个最高差
     * @param arr
     * @return
     */
    private static int maxProfit(int[] arr) {

        if (arr == null || arr.length == 0) {
            return 0;
        }
        int min = arr[0];
        int money = 0;
        for (int i = 1; i < arr.length; i++) {
            min = Math.min(arr[i], min);
            money = Math.max(money, arr[i] - min);
        }
        return money;
    }
}
